/**
 * 日历显示
 * @param {当前年} _Yy
 * @param {当前月} _Mm
 * @param {当前日} _Dd
 * @param {开始星期} _week
 * @param {上一月日期} _datePre
 * @param {下一月日期} _dateNext
 * @param {参数：当前日期} dateNew
 * @param {全局变量：上次开始经期} periodDate
 */
var Calendar = {};
Calendar = function(){
	var _Yy;         						//获取当前年份
	var _Mm; 								//获取当前月份
	var _Dd; 								//获取当前几号
    var _week;                      		//开始星期
    var _datePre;							//上一月
    var _dateNext;							//下一月
    var _control = true;					//是否是本月计算
	return {
		/**
		 * 日历显示入口
		 * @param {月} M
		 */
		init	: function(dateNew){
			var dateObj = new Date();
			//初始日期
			if(dateNew == 0){
				_Yy = dateObj.getFullYear();
				_Mm = dateObj.getMonth()+1;
				_Dd = dateObj.getDate();
				dateNew = _Yy+'/'+_Mm+'/01';
			//操作日期
			}else{
				_Yy = new Date(dateNew).getFullYear();
				_Mm = new Date(dateNew).getMonth()+1;
				_Dd = new Date(dateNew).getDate();
			}
			var sumDay = this.getDays(dateNew);		//当月总天数
			this.getWeek(dateNew);					//计算开始星期
			this.setNewDate();						//计算下月下月
			var html = this.setHtml(sumDay);		//输出日历
			$("#Calendar").html(html);
		},
		/**
		 * 日历格式显示
		 * @param {总天数} sumDay
		 */
		setHtml	: function(sumDay){
			var day  = 1;
			var html = '<div class="wmpd1d01">';
				html += '<a href="javascript:;" class="wmpd_btn01" id=\'up\' onclick=\'Calendar.init(\"'+_datePre+'\");\'>\<</a>';
				html += '<span>'+_Mm+'月</span> <span>'+_Yy+'</span>';
				html += '<a href="javascript:;" class="wmpd_btn02" id=\'dw\' onclick=\'Calendar.init(\"'+_dateNext+'\");\'>\></a>';
				html += '<ul class="wmpd1d02">';
				html += '<li>M</li><li>T</li><li>W</li><li>T</li><li>F</li><li>S</li><li>S</li>';
				html += '</ul>';
				html += '<ul class="wmpd1d03">';
				sumDay += _week;
				for(var i=1;i<sumDay;i++){
					if(i >= _week){
						html += '<li onclick="journal(this);" date=\''+ _Yy +'-'+ _Mm +'-'+ day +'\'><span>' + day + '</span></li>';
						day++;
					}else{
						html += '<li><span></span></li>';
					}
				}
				html += '<div class="clearfix"></div>';
				html += '</ul>';
				html += '</div>';
			return html;
		},
		/**
		 * 计算上下月份
		 */
		setNewDate : function(){
			if(_Mm == 1){
				_datePre  = (_Yy-1)+'/12/01';
				_dateNext = _Yy+'/'+(_Mm+1)+'/01';
			}else if(_Mm == 12){
				_datePre = _Yy+'/'+(_Mm-1)+'/01';
				_dateNext = (_Yy+1)+'/01/01';
			}else{
				_datePre  = _Yy+'/'+(_Mm-1)+'/01';
				_dateNext = _Yy+'/'+(_Mm+1)+'/01';
			}
		},
		/**
		 * 本月总天数
		 */
		getDays	: function(){
	        var nextMm = _Mm + 1;
	        var minDate = new Date( _Yy+"/"+_Mm+"/01 ");
			var maxDate = new Date( _Yy+"/"+nextMm+"/01 ");
			var sumDay  = ((maxDate-minDate)/(24*60*60*1000));
			if(nextMm > 12){
				sumDay = 31;
			}
			return sumDay;
		},
		/**
		 * 计算星期
		 * @param {年/月/日} Dd
		 */
		getWeek : function(dateOne) {
			dateTwo = '0000/1/1';
			var re = /^(\d{4})\S(\d{1,2})\S(\d{1,2})$/;
			var dtOne, dtTwo;
			if (re.test(dateOne)) {
				dtOne = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
			}
			if (re.test(dateTwo)) {
				dtTwo = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
			}
			var day = (Math.abs(Math.floor((dtTwo - dtOne) / (1000 * 60 * 60 * 24)))+1) % 7;
			if(day){
				_week = day;
			}else{
		   		_week = 7;
			}
		}
	}
}()
